CinderFrame 2.5
===============

a stylistic found-footage shader for Minecraft.

the idea is simple: the world renders properly, and the camera pointed at it does not. the lighting, shadows and materials underneath are a full modern shader stack. everything sitting on top of that is a cheap camcorder with a dirty lens, running film that has been in the bag too long. grain, a coarse PS1-era dither, a slight handheld weave, warm bleed around bright things, dust on the gate, and a desaturated grade with purple in the shadows.

the point is that it should read as a recording of the world rather than as the world. it is not a horror overlay. there is no permanent HUD, no scanlines, no fake VHS bar wiping down the screen. the world stays legible and you stay able to play; it just looks like somebody else filmed it.


what you need
-------------
  Iris or OptiFine
  Minecraft Java Edition
  a GPU that already runs a mid-range shader pack

Distant Horizons is supported. its LOD terrain is faded into the sky at long range so the
handoff from real chunks to LOD terrain does not show up as a hard line across the horizon, and
from 2.3 that terrain both casts and receives shadows, so shadows carry on past the last real
chunk instead of stopping dead at it.


installing
----------
do not extract the zip. Iris and OptiFine load shader packs as zips.

put it in your shaderpacks folder:

    %APPDATA%\.minecraft\shaderpacks

or, for a Modrinth App or CurseForge profile:

    %APPDATA%\ModrinthApp\profiles\<profile>\shaderpacks

you can open that folder from in game under Video Settings, Shader Packs, Open Folder. then
pick CinderFrame from the list.


the settings
------------
there are twenty controls. they are all on one page, they are all sliders, and they all read
Off, Low, Med, High. everything ships on Med, which is the balance the pack is designed around
rather than the prettiest it can look.

each control owns everything it affects. when you move Halation you are moving the highlight
bleed and the edge light leak together, because they are the same idea and splitting them into
six sliders only makes the page longer. if you want the pack quieter, turn things down. if you
want it gone, Off means off.

seven of them cost frames:

  Shadows           shadow map resolution and how far shadows are drawn. the map is deliberately
                    coarse at every setting, and every lookup is locked to the block pixels it
                    lands on, so shadow edges step with the world rather than curve across it.
                    this is the single most expensive thing in the pack. if you need frames, start
                    here. the setting no longer changes how many lookups a shadow costs - that is
                    one at every setting now - so what it buys you is map resolution and how far
                    shadows reach. Off and Low also let leaves and vines skip their shadow lookup
                    in dim areas, which is cheap but can misread a leaf texture that carries its
                    own shading. Med and High also put Distant Horizons LOD terrain into the
                    shadow map, which is what lets shadows carry on past the last real chunk.
                    that is a second pass over terrain that can reach a very long way, so if the
                    distance costs more than it is worth, Low is where it goes away.

  Reflections       water and block reflection quality. reflections are traced into a buffer at
                    an eighth of screen resolution at every setting, which is a deliberate cost
                    choice; the slider changes how much gets reflected and how carefully, not
                    the resolution. the reflected image is snapped to a grid coarser than the
                    frame, so it reads as a low-resolution layer rather than as a blurred one.

  Light Shafts      god rays through gaps in leaves, windows and cave mouths. costs a raymarch
                    per pixel wherever they are actually visible, so the cost comes and goes
                    with where you are standing.

  Ambient Occlusion contact shadowing in corners, under ledges and where blocks meet. Low is
                    two samples and nearly free, High is eight and is real work. most of the
                    corner shading you see comes from the occlusion Minecraft itself bakes into
                    the world, which costs nothing and does not move when you do; this slider
                    controls the screen-space pass that adds contact darkening on top of it.

  Clouds            volumetric cloud quality, and how coarsely the cloud shape is snapped to a
                    world grid. the clouds are a deck of overcast grey with a red cast rather
                    than white fluff, which is a large part of why the sky reads wrong in a
                    good way.

  Detail            surface detail and water quality. this one has no Off, because the renderer
                    needs a floor to stand on. only High invents normal maps from the block
                    textures, which reads every texture four extra times per pixel to give flat
                    faces relief they do not actually have; below it faces are flat, which is
                    what vanilla looks like and what a texture of this era looked like.

  Anti-Aliasing     edge smoothing. higher settings keep more of the previous frame, which is
                    smoother while you stand still and smears a little more while you move.

thirteen of them shape the picture, though the first one also buys frames:

  Pixel Grid        the resolution the frame is presented at. one sample per block of screen
                    pixels, taken at that block's centre, which is what a low-resolution image
                    scaled up looks like. on Med that is about 640x360 on a 1080p screen.
                    everything else on this page measures itself in those pixels rather than in
                    your monitor's, so the dither, the grain and the halation stay one visible
                    pixel wide instead of disappearing under the grid.

                    it is the one image control that is not free, and it is free in the other
                    direction: nothing finer than a block can reach the screen, so several of
                    the expensive passes stop drawing detail that would be thrown away. Off
                    gives you a full resolution frame and every pass back at full price.

  Film Grain        emulsion noise. grain is much stronger in shadow than in highlights, the way
                    a real fast film stock is, so it shows up most in dark corners. without any
                    of it the image reads as clean digital and the whole illusion drops.

  PS1 Dither        ordered dithering plus a coarse color quantization. this is the one effect
                    people either love or immediately switch off. the blocky banding in
                    gradients IS the look; it is not an artifact of something going wrong.

  Camera Motion     the operator. a slow handheld weave, a small per-frame jitter, focus
                    breathing as the lens settles, and a rolling-shutter warp. all of it is
                    sub-pixel and none of it touches your HUD or your crosshair.

  Lens              the glass. barrel distortion toward the edges, a faint asymmetry from a
                    lens that was never quite centered, and a corner vignette.

  Halation          the warm red bleed that real film gets around a blown highlight, plus a
                    slow light leak at the edge of the frame. this is the most legible film cue
                    in the pack; torches and lava are where you will notice it.

  Daylight Tint     what colour the sun is. stock daylight is amber, which is what makes a
                    normal afternoon read orange; this rotates it toward rose by taking green
                    down and bringing blue up, which is the whole difference between an orange
                    day and a pink one. every setting carries the same brightness, so moving
                    this changes the colour of the day and not the exposure of it. the sky stays
                    close to itself and only the haze follows the light, because a pink sun over
                    a blue sky is the picture; a pink sky as well just reads as a filter. Off is
                    the stock amber daylight back.

  Film Dust         sparse flecks and hairs on the gate. deliberately sparse rather than a
                    constant speckle, so it reads as dirt rather than as noise, and small
                    enough that you catch it rather than watch it.

  Color Grade       the pack's own color. desaturated overall, with a split tone that runs cool
                    in the shadows and warm in the highlights the way film does when its dye
                    layers do not respond at the same rate, plus a red push that deepens reds
                    without tinting anything neutral.

  Flicker           the slow wander. exposure drifting a little, color temperature moving
                    between slightly warm and slightly cool, and a small amount of dye
                    crosstalk. all of it is slow enough that you feel it rather than see it.

  Night Eyes        low-light adaptation. see below, it is the one worth explaining properly.

  Fog               distance haze that makes a far treeline read as hiding something, and the
                    lift that makes distant dark things - a doorway, a cave mouth, the inside of
                    a build - sit back in the air instead of reading as holes in the frame. at
                    High this also switches on the full atmospheric fog suite, which costs frames.

  Bloom             glow around bright things, balanced against image sharpening. higher is
                    softer overall.


Night Eyes
----------
shader nights are usually too dark to play in, and the usual fix is to turn the whole picture
up, which throws away the reason you wanted a dark night in the first place.

Night Eyes does it the way your eyes do. it is three things at once:

a gamma, which lifts the bottom of the range while leaving white exactly where it was. that
matters because it means no amount of it can blow out a torch, lava, or the moon. the darks
come up, the bright things stay put.

a floor, so the frame never reaches true black and a shape stays readable with no light on it
whatsoever. the floor is tinted to the violet in the shadows of the grade, so it reads as the
base of the film rather than as grey haze washed over everything.

and a desaturation, because real low-light vision is nearly colorless. rods do not resolve
hue. this is the part that makes it feel like an eye adapting instead of somebody dragging a
brightness slider.

it only engages where it is genuinely dark. daylight, dusk and lamp-lit rooms are untouched,
and it fades in over about half a minute, which is roughly how long real dark adaptation takes.
Blindness and the Warden's Darkness switch it off completely, so neither effect is weakened by
having this on.

one side effect worth knowing about: lifting near-black also lifts the small amount of the
previous frame that temporal anti-aliasing always keeps around, which can show up as a faint
trail behind moving things in the dark. the pack handles that by tightening how far the held
frame is allowed to differ from what is actually on screen, rather than by throwing the held
frame away, because that averaging is also what keeps dark gradients smooth. it is automatic
and scales with the Night Eyes setting.


performance
-----------
everything ships on Med on purpose. Med is the intended look and the intended cost.

if you need frames, the order is Shadows, then Reflections, then Light Shafts. those three are
most of the render budget. Ambient Occlusion and Clouds are the next tier down. Detail is worth
a look too: High reads every block texture four extra times per pixel to generate normal maps,
and Med does not.

the image controls are close to free by comparison. turning off grain or dust will not buy you
frames; they are there for the look, not for the budget. there are two exceptions. Fog at High
switches on a genuinely expensive fog suite. and Pixel Grid runs the other way: turning it UP is
what makes the rest of the pack cheap, and turning it Off gives back a full resolution frame at
full price.

High is a step up from Med, not a different pack. if it feels like too much, the pack is
probably not broken and Med is probably what you want.

2.2 also pushes shadows a long way further out. Medium goes from 203 blocks to 448 and High from
288 to 640, and the shadow map itself goes up from 768 to 1152 at the same time, because what you
actually see is blocks per texel and moving the distance on its own would just have made them
blurry everywhere instead of longer. worth knowing that shadows start fading at about 92% of that
number rather than ending abruptly, which is why they read as disappearing.

2.2 also fixes reflections bleeding through entities standing in front of water. the reflection
buffer runs at a quarter resolution and fills its gaps by adopting a neighbouring pixel that
carries more reflection data, and that test never asked how far away the neighbour was - so a mob
in front of a lake, being barely reflective itself, adopted the lake. it now only adopts from a
neighbour at roughly the same distance, which is the only case gap filling was ever for.

2.5 is about shadows that moved when you did.

standing still, the shadows were fine. walking towards something a few hundred blocks away, the
shadow it cast slid across the ground as you approached - and it slid along the line the sun
casts everything else along, so it read as the time of day changing rather than as anything
being wrong with the shadow.

it was the shadow bias. every shader nudges the point it looks up in the shadow map a little way
out along the surface, or a surface ends up shadowing itself in fine stripes. how far it has to
go depends on how coarse the shadow map is at that spot, and Complementary estimated that from
how far the surface was from the camera, raised to the power of one and a half. that estimate is
good across its own 192-block shadow map. CinderFrame's is 448, and out there the same formula
was asking for a nine-block nudge - and nudging the lookup point upwards moves the shadow it
finds sideways, by the nudge divided by the tangent of the sun's height. so distant shadows sat
several blocks off from where they belonged, and because the error was a function of how far
away you were standing, it changed as you walked.

the nudge is now measured in shadow map texels, which is the thing it was always about, and a
texel grows in a straight line with distance rather than a curve. same value at fifty blocks,
where the pack has been running without stripes for a while now; roughly a third of it at four
hundred. measured across a walk from 360 blocks out to 40, the shadow edge used to travel 7.9
blocks and now travels 2.7, and what is left is the honest part - a coarser map genuinely does
need a wider nudge.

the number also now reads the shadow map's own settings, so it is correct per quality tier
instead of being tuned for one of them. High, with its 640-block map, had been asking for a
seventeen-block nudge at its far edge.

2.4 reduced camera noise by about a quarter across grain, dither, handheld motion and dust, and
fixed the shadow speckle that had not been following the grain setting.

2.3 is about the colour of daylight and about where shadows stop.

the day was orange, and it was orange because the sunlight itself is: stock noon light is about
two parts red to one part blue with green sitting between them, which is the definition of
amber, and because it is the light rather than a filter it is what the whole picture reads as.
the new Daylight Tint control rotates it - green down, blue up - until blue sits above green,
which is the point at which the same scene stops reading orange and starts reading rose. it is
the light that moves, so shadows keep the cool blue they get from the sky and the contrast
between the two is most of the effect. the distance follows at half strength so the haze does
not stay behind, and the noon sky stays close to the blue it was. every setting carries the same
luminance, so this is a colour control and never an exposure one.

shadows used to stop at exactly the line where real chunks hand over to Distant Horizons, which
on a typical DH setup is a hard ring on the ground a hundred and something blocks out. two
separate things caused that and both are fixed. LOD terrain was never written into the shadow
map at all, so nothing out there cast anything; it is now, through a new shadow stage, on
Shadows Med and High. and a LOD fragment was never allowed to take a shadow lookup, so even the
shadows of the real world stopped at the boundary rather than carrying across it; it can now.
together that means shadows run out to the full shadow distance - 448 blocks on Med - and then
fade rather than end. the fade got wider as well: it was a flat sixteen blocks, which is a
gentle falloff up close and a line drawn on the ground at four hundred, and it is now a twelfth
of however far the shadows reach.

2.3 also fixes three settings that had quietly stopped doing anything. the properties file is
read on its own, without the file that holds the pack settings, so a condition in it can only
test a real menu option - and three of them were testing values that live one layer deeper than
that. the effect was that Shadows Off still drew the entire shadow map and still submitted every
entity to it, and Anti-Aliasing Off still ran a full screen pass whose only remaining job was to
copy one buffer onto itself. all three now ask the setting the player actually moves.

2.2 is about the god rays. they are a third of the strength they were, they take roughly half the
samples so they are coarser and chunkier along the ray, and the range over which they check
whether something is actually blocking the sun is a lot further out than it was. that last one is
the fix for shafts showing up under terrain that should have been in the way: a shaft is only
tested against the shadow map out to a certain distance, and past it the ray has nothing to test
against and comes back lit. with Distant Horizons running that cutoff was landing well inside the
terrain you can see, because it was tied to the vanilla render distance rather than to the shadow
map. Light Shafts is still on the menu if you want them back.

2.1 makes the pack sharp by default. Pixel Grid ships Off, so nothing is pixelated unless you
ask for it. Anti-aliasing ships Off too, which means no temporal accumulation and therefore no
ghosting or smearing behind anything that moves. reflections go back to a quarter-resolution
buffer - the eighth in 2.0 only made sense while a pixel grid was hiding it. Night Vision, Grade
and Lens all drop a tier, so the frame is brighter, less desaturated and has far less vignette
darkening the corners. every 2.0 control is still there and still does what it did; the defaults
are what changed. the trade for Anti-aliasing Off is that edges are hard and the dithered effects
shimmer a little in motion - set it back to Med if you would rather have the stability.

2.0 presents the frame at a console resolution and spends the difference. the new Pixel Grid
control samples once per block of screen pixels, at that block's centre, and every effect on the
page measures itself in those pixels instead of your monitor's. on Med that is a 640x360 image on
a 1080p screen.

the point of it is what it lets go. nothing finer than a block can reach the screen, so the passes
that were producing that detail stop: reflections are traced into a buffer at an eighth of screen
resolution rather than a quarter, the reflection march takes sixteen steps instead of thirty, the
filter that used to average the noise out of it takes nine taps instead of twenty-five, light
shafts take seven samples instead of ten, and depth of field is skipped entirely wherever the blur
would land inside a single visible pixel. the reflected image is snapped to a grid of its own,
coarser than the frame, so water traced at full resolution stops being the one sharp surface in a
blocky picture.

the lighting moved toward vanilla in the same pass, because that is what pays for the rest of it.
corner shading now leans on the occlusion Minecraft already bakes into the world - free to read,
and it does not swim when you move - with the screen-space pass left to add contact darkening on
top. block light and that corner shading are snapped to the texture's own pixels, the way vanilla's
per-face lightmap already works, riding on a calculation the shadow lock was doing anyway. and
below Detail High the pack no longer invents normal maps from the block textures, so faces are
flat. Detail High puts them back.

if you want the 1.7 picture, Pixel Grid Off restores it exactly, and Detail High restores the
surface relief.

1.7 locks shadows to the block pixels underneath them, and it is the cheapest the shadow pass has
been. every lookup is moved to the middle of the texture texel it lands on before it is projected,
so a shadow edge steps along the grid the world's own art is drawn on rather than along a grid of
its own. that is also what makes it cheap: every fragment across a texel is asking the same
question, so the four lookups that used to be spread around it - eight on held items, entities and
particles - could only blur the answer back off the grid it had just been locked to. one lookup
does the whole texel now, and the per-pixel jitter 1.6 added goes with them.

it is a look change as much as a cost one. shadow edges are harder and stepped instead of soft and
faintly noisy, and leaves cast a firmer shadow than they did. if you preferred the softer edge,
there is no switch for it: this is what the pack does now.

1.6 takes another quarter off shadows and reflections. the shadow map is three quarters of the
resolution it was at every setting, and every shadow lookup is jittered by up to one and a half
texels, so
the coarser map arrives as noise the temporal filter averages back into a soft edge rather than as
a staircase running along it. reflections went from a third of screen resolution to a quarter.

1.6 also fixes distant LOD terrain bleeding around the player model in third person. LOD terrain
holds most of its previous frame on purpose, which is what keeps it from crawling at range, and it
does that with the silhouette test that normally stops a held frame leaking past an edge switched
off. the player never gets that treatment, so ordinary chunks behind them let go of the old frame
within a frame or two and LOD terrain did not - it kept the player's outline for the better part
of a second. that is why it read as the LOD, and only the LOD, bleeding through them. it shows up
against bright water and snow because the leak is a blend, and a blend needs contrast to be
visible at all. LOD terrain sitting behind something real now lets go at the same rate everything
else does, and LOD terrain with only sky in front of it is untouched.

1.5 also retunes shadows and reflections together, for a net gain rather than a trade. the shadow
map is half the resolution it was at every setting, so shadow edges are coarser and more stepped -
that is deliberate, a recording does not have clean edges - and shadows are drawn a third further
out. those pull opposite ways and the resolution wins: a shadow map is rasterized once a frame
across the whole distance, so halving it is four times fewer texels while the extra distance only
adds geometry. reflections went the same way, a third less buffer resolution for a quarter more
distance, so water keeps reflecting well past the point it used to give up.

1.5 is the real fix for the black entrances, and 1.4 was not. what makes a distant opening
read as a hole is not that it is dark, it is that everything around it has faded to the sky and it
has not. so the test is whether an opening ends up the SAME COLOUR as the wall beside it, and 1.4
was measured on whether it moved at all - it moved, it was still black, and the release went out.

two things were wrong. border fog, the pass that fades ordinary chunks into the sky at the edge of
the render distance, was switched on only at Fog High; it is not part of the expensive fog suite
and it is now on from Low up. and the post-process haze had two separate ceilings multiplied
together, so an opening could never exceed about a tenth of the sky no matter what the slider
said. with Distant Horizons the two combined into the worst case: terrain past the render distance
was faded to about 95% sky while a building this side of it got nothing at all.

1.4 tried to fix distance fog on dark geometry and did not go far enough. below the top tier the pack stands in for dense fog with
a shallow haze, and that haze mixed a pixel toward its OWN brightness - which does nothing at all
to something dark, because mixing black toward black cannot move it. so a building interior seen
through a door from a hundred blocks away kept its full black level while the ground around it
hazed, and read as a hole cut in the frame rather than as something far away. distant dark
geometry now lifts toward the sky the way real haze lifts it, which is the part of fog that
actually says "this is far away". anything already brighter than the air is untouched, so the
daylight image is unchanged, and at night there is no bright air to lift toward so it goes quiet
by itself. the amount is on the Fog slider with everything else.

1.3 pulls Med back a notch. the film dust motes are about a third the size they were - at 1080p
the old ones were roughly seventeen pixels across, which is a blob on the lens rather than a
fleck on the gate - and bloom, halation, the grade, the dither and the handheld weave all came
down by ten to twenty-five percent at Med. Off, Low and High are unchanged except for bloom,
which moved as a whole ladder so the four steps still read evenly. Med also draws shadows to 152
blocks rather than 160, which is the only change in this release that buys frames: the shadow
pass draws everything inside a box of that half-width, so the cost goes with the square. it is
about ten percent less geometry through that pass for a fade line under one chunk nearer.

if you liked 1.2's Med, one notch up on Bloom, Grade, Halation and Film Dust is close to it.

1.2 is faster than 1.1 at the same settings. the terrain, water and shadow passes stopped
sending the renderer four values per vertex that were the same for every vertex on screen, the
material detection that runs over every terrain pixel got cheaper, fully transparent particles
now leave before they are lit, and reflections stop being traced past the distance there is
anything left to reflect. none of that changes what you see. the one visible difference is that
a distant entity's shadow now fades out over the last few blocks instead of vanishing at once.


honest notes
------------
the PS1 dither is polarizing. it is on by default because it is half the identity of the pack.
if you find it distracting, set it to Off and everything else still works.

grain is loudest in dark scenes. that is correct behavior for the stock being emulated, but if
you spend most of your time in caves you may want it one notch lower than you would above
ground.

there is no motion blur by default. the upstream nine-sample pass blends across depth edges and
smeared dark silhouettes badly, so it ships off.


credits
-------
CinderFrame is a modified pack built on Complementary Shaders - Unbound r5.8.1 by EminGT.

    Complementary Shaders by EminGT - https://www.complementary.dev

that is not a footnote. the renderer, the lighting, the materials, the atmospherics and the
overwhelming majority of the code in this pack are Complementary's work, and it is an
exceptional piece of engineering. CinderFrame adds the camera and film stack, the color grade,
Night Eyes, and the Distant Horizons fade. everything that makes the world underneath look
correct was already there.


license
-------
CinderFrame is distributed under the Complementary License Agreement, reproduced in full in
License.txt, which is the license of the pack it is built on. it is not under any other
license, and it cannot be placed under one.

in practice:

  use it freely for gameplay and for content creation, including monetized video and
  streaming. you do not need to ask.

  do not redistribute it, or parts of it, outside the terms in License.txt. if you want to
  modify it and publish the result, read section 1.3 first. it asks that Complementary is
  credited with a link, that License.txt travels unchanged inside your pack, that your pack is
  named distinctly, that it looks noticeably different in ordinary daytime play, and that your
  own additions are substantial and human-written.

  adding it to a modpack is covered by section 1.2, which asks that you add it through
  Modrinth or CurseForge rather than uploading the file directly.

if you are unsure whether something is allowed, License.txt is the authority and this file is
not.
